<!DOCTYPE html>
<html style="display: none;" lang="zh">
    <head>
    <!-- hexo-inject:begin --><!-- hexo-inject:end --><meta charset="utf-8">
    <!--
        © Material Theme
        https://github.com/viosey/hexo-theme-material
        Version: 1.5.6 -->
    <script>
        window.materialVersion = "1.5.6"
        // Delete localstorage with these tags
        window.oldVersion = [
            'codestartv1',
            '1.3.4',
            '1.4.0',
            '1.4.0b1',
            '1.5.0',
            '1.5.2',
            '1.5.5'
        ]
    </script>

    <!-- dns prefetch -->
    <meta http-equiv="x-dns-prefetch-control" content="on">





    <link rel="dns-prefetch" href="https://xuefeng.disqus.com"/>



    <link rel="dns-prefetch" href="https://www.google-analytics.com"/>



    <link rel="dns-prefetch" href="https://fonts.googleapis.com"/>





    <!-- Meta & Info -->
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
    <meta name="renderer" content="webkit">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">

    <!-- Title -->
    
    <title>
        
            如何申请 iOS 证书 | 
        
        boXue·Fengke
    </title>

    <!-- Favicons -->
    <link rel="icon shortcut" type="image/ico" href="/img/kcalb_logo_nobg.png">
    <link rel="icon" href="/img/kcalb_logo_nobg.png">

    <meta name="format-detection" content="telephone=no"/>
    <meta name="description" itemprop="description" content="">
    <meta name="keywords" content=",iOS">
    <meta name="theme-color" content="#0097A7">

    <!-- Disable Fucking Bloody Baidu Tranformation -->
    <meta http-equiv="Cache-Control" content="no-transform" />
    <meta http-equiv="Cache-Control" content="no-siteapp" />

    <!--[if lte IE 9]>
        <link rel="stylesheet" href="/css/ie-blocker.css">

        
            <script src="/js/ie-blocker.zhCN.js"></script>
        
    <![endif]-->

    <!-- Import lsloader -->
    <script>(function(){window.lsloader={jsRunSequence:[],jsnamemap:{},cssnamemap:{}};lsloader.removeLS=function(a){try{localStorage.removeItem(a)}catch(b){}};lsloader.setLS=function(a,c){try{localStorage.setItem(a,c)}catch(b){}};lsloader.getLS=function(a){var c="";try{c=localStorage.getItem(a)}catch(b){c=""}return c};versionString="/*"+(window.materialVersion||"unknownVersion")+"*/";lsloader.clean=function(){try{var b=[];for(var a=0;a<localStorage.length;a++){b.push(localStorage.key(a))}b.forEach(function(e){var f=lsloader.getLS(e);if(window.oldVersion){var d=window.oldVersion.reduce(function(g,h){return g||f.indexOf("/*"+h+"*/")!==-1},false);if(d){lsloader.removeLS(e)}}})}catch(c){}};lsloader.clean();lsloader.load=function(f,a,b,d){if(typeof b==="boolean"){d=b;b=undefined}d=d||false;b=b||function(){};var e;e=this.getLS(f);if(e&&e.indexOf(versionString)===-1){this.removeLS(f);this.requestResource(f,a,b,d);return}if(e){var c=e.split(versionString)[0];if(c!=a){console.log("reload:"+a);this.removeLS(f);this.requestResource(f,a,b,d);return}e=e.split(versionString)[1];if(d){this.jsRunSequence.push({name:f,code:e});this.runjs(a,f,e)}else{document.getElementById(f).appendChild(document.createTextNode(e));b()}}else{this.requestResource(f,a,b,d)}};lsloader.requestResource=function(b,e,a,c){var d=this;if(c){this.iojs(e,b,function(h,f,g){d.setLS(f,h+versionString+g);d.runjs(h,f,g)})}else{this.iocss(e,b,function(f){document.getElementById(b).appendChild(document.createTextNode(f));d.setLS(b,e+versionString+f)},a)}};lsloader.iojs=function(d,b,g){var a=this;a.jsRunSequence.push({name:b,code:""});try{var f=new XMLHttpRequest();f.open("get",d,true);f.onreadystatechange=function(){if(f.readyState==4){if((f.status>=200&&f.status<300)||f.status==304){if(f.response!=""){g(d,b,f.response);return}}a.jsfallback(d,b)}};f.send(null)}catch(c){a.jsfallback(d,b)}};lsloader.iocss=function(f,c,h,a){var b=this;try{var g=new XMLHttpRequest();g.open("get",f,true);g.onreadystatechange=function(){if(g.readyState==4){if((g.status>=200&&g.status<300)||g.status==304){if(g.response!=""){h(g.response);a();return}}b.cssfallback(f,c,a)}};g.send(null)}catch(d){b.cssfallback(f,c,a)}};lsloader.iofonts=function(f,c,h,a){var b=this;try{var g=new XMLHttpRequest();g.open("get",f,true);g.onreadystatechange=function(){if(g.readyState==4){if((g.status>=200&&g.status<300)||g.status==304){if(g.response!=""){h(g.response);a();return}}b.cssfallback(f,c,a)}};g.send(null)}catch(d){b.cssfallback(f,c,a)}};lsloader.runjs=function(f,c,e){if(!!c&&!!e){for(var b in this.jsRunSequence){if(this.jsRunSequence[b].name==c){this.jsRunSequence[b].code=e}}}if(!!this.jsRunSequence[0]&&!!this.jsRunSequence[0].code&&this.jsRunSequence[0].status!="failed"){var a=document.createElement("script");a.appendChild(document.createTextNode(this.jsRunSequence[0].code));a.type="text/javascript";document.getElementsByTagName("head")[0].appendChild(a);this.jsRunSequence.shift();if(this.jsRunSequence.length>0){this.runjs()}}else{if(!!this.jsRunSequence[0]&&this.jsRunSequence[0].status=="failed"){var d=this;var a=document.createElement("script");a.src=this.jsRunSequence[0].path;a.type="text/javascript";this.jsRunSequence[0].status="loading";a.onload=function(){d.jsRunSequence.shift();if(d.jsRunSequence.length>0){d.runjs()}};document.body.appendChild(a)}}};lsloader.tagLoad=function(b,a){this.jsRunSequence.push({name:a,code:"",path:b,status:"failed"});this.runjs()};lsloader.jsfallback=function(c,b){if(!!this.jsnamemap[b]){return}else{this.jsnamemap[b]=b}for(var a in this.jsRunSequence){if(this.jsRunSequence[a].name==b){this.jsRunSequence[a].code="";this.jsRunSequence[a].status="failed";this.jsRunSequence[a].path=c}}this.runjs()};lsloader.cssfallback=function(e,c,b){if(!!this.cssnamemap[c]){return}else{this.cssnamemap[c]=1}var d=document.createElement("link");d.type="text/css";d.href=e;d.rel="stylesheet";d.onload=d.onerror=b;var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(d,a)};lsloader.runInlineScript=function(c,b){var a=document.getElementById(b).innerText;this.jsRunSequence.push({name:c,code:a});this.runjs()}})();</script>

    <!-- Import queue -->
    <script>function Queue(){this.dataStore=[];this.offer=b;this.poll=d;this.execNext=a;this.debug=false;this.startDebug=c;function b(e){if(this.debug){console.log("Offered a Queued Function.")}if(typeof e==="function"){this.dataStore.push(e)}else{console.log("You must offer a function.")}}function d(){if(this.debug){console.log("Polled a Queued Function.")}return this.dataStore.shift()}function a(){var e=this.poll();if(e!==undefined){if(this.debug){console.log("Run a Queued Function.")}e()}}function c(){this.debug=true}}var queue=new Queue();</script>

    <!-- Import CSS -->
    
        <style id="material_css"></style><script>if(typeof window.lsLoadCSSMaxNums === "undefined")window.lsLoadCSSMaxNums = 0;window.lsLoadCSSMaxNums++;lsloader.load("material_css","/css/material.min.css?Z7a72R1E4SxzBKR/WGctOA==",function(){if(typeof window.lsLoadCSSNums === "undefined")window.lsLoadCSSNums = 0;window.lsLoadCSSNums++;if(window.lsLoadCSSNums == window.lsLoadCSSMaxNums)document.documentElement.style.display="";}, false)</script>
        <style id="style_css"></style><script>if(typeof window.lsLoadCSSMaxNums === "undefined")window.lsLoadCSSMaxNums = 0;window.lsLoadCSSMaxNums++;lsloader.load("style_css","/css/style.min.css?NKhlKQkXw/c66TR5p4wO+w==",function(){if(typeof window.lsLoadCSSNums === "undefined")window.lsLoadCSSNums = 0;window.lsLoadCSSNums++;if(window.lsLoadCSSNums == window.lsLoadCSSMaxNums)document.documentElement.style.display="";}, false)</script>

        

    

    

    <!-- Config CSS -->

<!-- Other Styles -->
<style>
  body, html {
    font-family: Roboto, "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
    overflow-x: hidden !important;
  }
  
  code {
    font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
  }

  a {
    color: #00838F;
  }

  .mdl-card__media,
  #search-label,
  #search-form-label:after,
  #scheme-Paradox .hot_tags-count,
  #scheme-Paradox .sidebar_archives-count,
  #scheme-Paradox .sidebar-colored .sidebar-header,
  #scheme-Paradox .sidebar-colored .sidebar-badge{
    background-color: #0097A7 !important;
  }

  /* Sidebar User Drop Down Menu Text Color */
  #scheme-Paradox .sidebar-colored .sidebar-nav>.dropdown>.dropdown-menu>li>a:hover,
  #scheme-Paradox .sidebar-colored .sidebar-nav>.dropdown>.dropdown-menu>li>a:focus {
    color: #0097A7 !important;
  }

  #post_entry-right-info,
  .sidebar-colored .sidebar-nav li:hover > a,
  .sidebar-colored .sidebar-nav li:hover > a i,
  .sidebar-colored .sidebar-nav li > a:hover,
  .sidebar-colored .sidebar-nav li > a:hover i,
  .sidebar-colored .sidebar-nav li > a:focus i,
  .sidebar-colored .sidebar-nav > .open > a,
  .sidebar-colored .sidebar-nav > .open > a:hover,
  .sidebar-colored .sidebar-nav > .open > a:focus,
  #ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-head a {
    color: #0097A7 !important;
  }

  .toTop {
    background: #757575 !important;
  }

  .material-layout .material-post>.material-nav,
  .material-layout .material-index>.material-nav,
  .material-nav a {
    color: #757575;
  }

  #scheme-Paradox .MD-burger-layer {
    background-color: #757575;
  }

  #scheme-Paradox #post-toc-trigger-btn {
    color: #757575;
  }

  .post-toc a:hover {
    color: #00838F;
    text-decoration: underline;
  }

</style>


<!-- Theme Background Related-->

    <style>
      body{
        background-color: #F5F5F5;
      }

      /* blog_info bottom background */
      #scheme-Paradox .material-layout .something-else .mdl-card__supporting-text{
        background-color: #fff;
      }
    </style>




<!-- Fade Effect -->

    <style>
      .fade {
        transition: all 800ms linear;
        -webkit-transform: translate3d(0,0,0);
        -moz-transform: translate3d(0,0,0);
        -ms-transform: translate3d(0,0,0);
        -o-transform: translate3d(0,0,0);
        transform: translate3d(0,0,0);
        opacity: 1;
      }

      .fade.out{
        opacity: 0;
      }
    </style>


<!-- Import Font -->
<!-- Import Roboto -->

    <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">


<!-- Import Material Icons -->


    <style id="material_icons"></style><script>if(typeof window.lsLoadCSSMaxNums === "undefined")window.lsLoadCSSMaxNums = 0;window.lsLoadCSSMaxNums++;lsloader.load("material_icons","/css/material-icons.css?pqhB/Rd/ab0H2+kZp0RDmw==",function(){if(typeof window.lsLoadCSSNums === "undefined")window.lsLoadCSSNums = 0;window.lsLoadCSSNums++;if(window.lsLoadCSSNums == window.lsLoadCSSMaxNums)document.documentElement.style.display="";}, false)</script>




    <!-- Import jQuery -->
    
        <script>lsloader.load("jq_js","/js/jquery.min.js?qcusAULNeBksqffqUM2+Ig==", true)</script>
    

    <!-- WebAPP Icons -->
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="application-name" content="boXue·Fengke">
    <meta name="msapplication-starturl" content="https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html">
    <meta name="msapplication-navbutton-color" content="#0097A7">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-title" content="boXue·Fengke">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon" href="/img/kcalb_logo_nobg.png">

    <!-- Site Verification -->
    <meta name="google-site-verification" content="google0da443a51f3ca324" />
    

    <!-- RSS -->
    

    <!-- The Open Graph protocol -->
    <meta property="og:url" content="https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html">
    <meta property="og:type" content="blog">
    <meta property="og:title" content="如何申请 iOS 证书 | boXue·Fengke">
    <meta property="og:image" content="/img/kcalb_logo_nobg.png">
    <meta property="og:description" content="">
    <meta property="og:article:tag" content="iOS"> 

    
        <meta property="article:published_time" content="Wed May 20 2020 13:14:00 GMT+0000">
        <meta property="article:modified_time" content="Sat May 23 2020 05:22:21 GMT+0000">
    

    <!-- The Twitter Card protocol -->
    <meta name="twitter:card" content="summary_large_image">

    <!-- Add canonical link for SEO -->
    
        <link rel="canonical" href="https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html" />
    

    <!-- Structured-data for SEO -->
    
        


<script type="application/ld+json">
{
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "mainEntityOfPage": "https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html",
    "headline": "如何申请 iOS 证书",
    "datePublished": "Wed May 20 2020 13:14:00 GMT+0000",
    "dateModified": "Sat May 23 2020 05:22:21 GMT+0000",
    "author": {
        "@type": "Person",
        "name": "w-xuefeng",
        "image": {
            "@type": "ImageObject",
            "url": "https://pub.wangxuefeng.com.cn/asset/defaultHead/avatar.png"
        },
        "description": "不念过往 不畏将来"
    },
    "publisher": {
        "@type": "Organization",
        "name": "boXue·Fengke",
        "logo": {
            "@type":"ImageObject",
            "url": "/img/kcalb_logo_nobg.png"
        }
    },
    "keywords": ",iOS",
    "description": "",
}
</script>


    

    <!-- Analytics -->
    
        <script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
    ga('create', 'UA-109928914-1', 'auto');ga('send', 'pageview');
</script>
    
    
    

    <!-- Custom Head -->
    

<meta name="generator" content="Hexo 4.2.1"><link rel="stylesheet" href="/css/prism-ghcolors.css" type="text/css"><!-- hexo-inject:begin --><!-- hexo-inject:end --></head>


    
        <body id="scheme-Paradox" class="lazy">
            <!-- hexo-inject:begin --><!-- hexo-inject:end --><div class="material-layout  mdl-js-layout has-drawer is-upgraded">
                

                <!-- Main Container -->
                <main class="material-layout__content" id="main">

                    <!-- Top Anchor -->
                    <div id="top"></div>

                    
                        <!-- Hamburger Button -->
                        <button class="MD-burger-icon sidebar-toggle">
                            <span id="MD-burger-id" class="MD-burger-layer"></span>
                        </button>
                    

                    <!-- Post TOC -->

    
    <!-- Back Button -->
    <!--
    <div class="material-back" id="backhome-div" tabindex="0">
        <a class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon"
           href="#" onclick="window.history.back();return false;"
           target="_self"
           role="button"
           data-upgraded=",MaterialButton,MaterialRipple">
            <i class="material-icons" role="presentation">arrow_back</i>
            <span class="mdl-button__ripple-container">
                <span class="mdl-ripple"></span>
            </span>
        </a>
    </div>
    -->


    <!-- Left aligned menu below button -->
    
    
    <button id="post-toc-trigger-btn"
        class="mdl-button mdl-js-button mdl-button--icon">
        <i class="material-icons">format_list_numbered</i>
    </button>

    <ul class="post-toc-wrap mdl-menu mdl-menu--bottom-left mdl-js-menu mdl-js-ripple-effect" for="post-toc-trigger-btn" style="max-height:80vh; overflow-y:scroll;">
        <ol class="post-toc"><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#一、账号类型与名词解释"><span class="post-toc-number">1.</span> <span class="post-toc-text">一、账号类型与名词解释</span></a></li><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#二、申请流程"><span class="post-toc-number">2.</span> <span class="post-toc-text">二、申请流程</span></a><ol class="post-toc-child"><li class="post-toc-item post-toc-level-3"><a class="post-toc-link" href="#1-创建钥匙串文件"><span class="post-toc-number">2.1.</span> <span class="post-toc-text">1. 创建钥匙串文件</span></a></li><li class="post-toc-item post-toc-level-3"><a class="post-toc-link" href="#2-申请证书"><span class="post-toc-number">2.2.</span> <span class="post-toc-text">2. 申请证书</span></a></li><li class="post-toc-item post-toc-level-3"><a class="post-toc-link" href="#3-创建应用-ID-（App-ID，Bundle-ID）"><span class="post-toc-number">2.3.</span> <span class="post-toc-text">3. 创建应用 ID （App ID，Bundle ID）</span></a></li><li class="post-toc-item post-toc-level-3"><a class="post-toc-link" href="#4-添加调试设备"><span class="post-toc-number">2.4.</span> <span class="post-toc-text">4. 添加调试设备</span></a></li><li class="post-toc-item post-toc-level-3"><a class="post-toc-link" href="#5-创建应用描述文件"><span class="post-toc-number">2.5.</span> <span class="post-toc-text">5. 创建应用描述文件</span></a></li><li class="post-toc-item post-toc-level-3"><a class="post-toc-link" href="#6-导出-P12-证书"><span class="post-toc-number">2.6.</span> <span class="post-toc-text">6. 导出 P12 证书</span></a></li><li class="post-toc-item post-toc-level-3"><a class="post-toc-link" href="#参考资料"><span class="post-toc-number">2.7.</span> <span class="post-toc-text">参考资料</span></a></li></ol></li></ol>
    </ul>
    




<!-- Layouts -->

    <!-- Post Module -->
    <div class="material-post_container">

        <div class="material-post mdl-grid">
            <div class="mdl-card mdl-shadow--4dp mdl-cell mdl-cell--12-col">

                <!-- Post Header(Thumbnail & Title) -->
                
    <!-- Paradox Post Header -->
    
        <!-- Custom Thumbnail -->
        <div class="post_thumbnail-custom mdl-card__media mdl-color-text--grey-50" style="background-image:url(https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/thumbnail.png)">
    
            <p class="article-headline-p">
                如何申请 iOS 证书
            </p>
        </div>





                
                    <!-- Paradox Post Info -->
                    <div class="mdl-color-text--grey-700 mdl-card__supporting-text meta">

    <!-- Author Avatar -->
    <div id="author-avatar">
        <img src="https://pub.wangxuefeng.com.cn/asset/defaultHead/avatar.png" width="44px" height="44px" alt="Author Avatar"/>
    </div>
    <!-- Author Name & Date -->
    <div>
        <strong>w-xuefeng</strong>
        <span>5月 20, 2020</span>
    </div>

    <div class="section-spacer"></div>

    <!-- Favorite -->
    <!--
        <button id="article-functions-like-button" class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon btn-like">
            <i class="material-icons" role="presentation">favorite</i>
            <span class="visuallyhidden">favorites</span>
        </button>
    -->

    <!-- Qrcode -->
    
        <button id="article-functions-qrcode-button" class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon">
    <i class="material-icons" role="presentation">devices other</i>
    <span class="visuallyhidden">devices other</span>
</button>
<ul class="mdl-menu mdl-menu--bottom-right mdl-js-menu mdl-js-ripple-effect" for="article-functions-qrcode-button">
    <li class="mdl-menu__item">在其它设备中阅读本文章</li>
    
        <img src="">
    
</ul>

    

    <!-- Tags (bookmark) -->
    
    <button id="article-functions-viewtags-button" class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon">
        <i class="material-icons" role="presentation">bookmark</i>
        <span class="visuallyhidden">bookmark</span>
    </button>
    <ul class="mdl-menu mdl-menu--bottom-right mdl-js-menu mdl-js-ripple-effect" for="article-functions-viewtags-button">
        <li class="mdl-menu__item">
        <a class="post_tag-link" href="/tags/iOS/" rel="tag">iOS</a>
    </ul>
    

    <!-- Share -->
    
        <button id="article-fuctions-share-button" class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon">
    <i class="material-icons" role="presentation">share</i>
    <span class="visuallyhidden">share</span>
</button>
<ul class="mdl-menu mdl-menu--bottom-right mdl-js-menu mdl-js-ripple-effect" for="article-fuctions-share-button">
    

    

    <!-- Share Weibo -->
    
        <a class="post_share-link" href="http://service.weibo.com/share/share.php?appkey=&title=如何申请 iOS 证书&url=https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html&pic=https://blog.wangxuefeng.com.cn/img/kcalb_logo_nobg.png&searchPic=false&style=simple" target="_blank">
            <li class="mdl-menu__item">
                分享到微博
            </li>
        </a>
    

    <!-- Share Twitter -->
    
        <a class="post_share-link" href="https://twitter.com/intent/tweet?text=如何申请 iOS 证书&url=https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html&via=w-xuefeng" target="_blank">
            <li class="mdl-menu__item">
                分享到 Twitter
            </li>
        </a>
    

    <!-- Share Facebook -->
    
        <a class="post_share-link" href="https://www.facebook.com/sharer/sharer.php?u=https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html" target="_blank">
            <li class="mdl-menu__item">
                分享到 Facebook
            </li>
        </a>
    

    <!-- Share Google+ -->
    
        <a class="post_share-link" href="https://plus.google.com/share?url=https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html" target="_blank">
            <li class="mdl-menu__item">
                分享到 Google+
            </li>
        </a>
    

    <!-- Share LinkedIn -->
    

    <!-- Share QQ -->
    
        <a class="post_share-link" href="http://connect.qq.com/widget/shareqq/index.html?site=boXue·Fengke&title=如何申请 iOS 证书&summary=&pics=https://blog.wangxuefeng.com.cn/img/kcalb_logo_nobg.png&url=https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html" target="_blank">
            <li class="mdl-menu__item">
                分享到 QQ
            </li>
        </a>
    

    <!-- Share Telegram -->
    
</ul>

    
</div>

                

                <!-- Post Content -->
                <div id="post-content" class="mdl-color-text--grey-700 mdl-card__supporting-text fade out">
    
        <h2 id="一、账号类型与名词解释"><a href="#一、账号类型与名词解释" class="headerlink" title="一、账号类型与名词解释"></a>一、账号类型与名词解释</h2><p>首先我们来认识一下苹果开发者账号类型和几个专业名词：</p>
<ul>
<li><p>苹果开发者账号类型：</p>
<ul>
<li><p>$99/年 (可上架 App Store)</p>
<ul>
<li>个人版</li>
<li>公司版 (可创建团队添加开发成员)</li>
</ul>
</li>
<li><p>$299/年 企业版 (不可上架 App Store, 可创建团队添加开发成员）</p>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>专业名词：</p>
<ul>
<li>钥匙串文件</li>
<li>证书<ul>
<li>软件 （Software）<ul>
<li>开发证书</li>
<li>发布证书</li>
<li>In House 发布证书</li>
</ul>
</li>
<li>服务 （Service）<ul>
<li>开发推送证书 (Sandbox)</li>
<li>发布推送证书 (Sandbox &amp; Production)</li>
</ul>
</li>
<li>导出副本<ul>
<li>P12 证书 （Keychain）</li>
</ul>
</li>
</ul>
</li>
<li>应用 ID （bundleID）</li>
<li>应用描述配置文件</li>
</ul>
</li>
</ul>
<table>
<thead>
<tr>
<th>名词</th>
<th>解释</th>
<th>对应英文</th>
<th>文件后缀名</th>
</tr>
</thead>
<tbody><tr>
<td>钥匙串文件</td>
<td>申请证书所需的密钥文件</td>
<td>Certificate Signing Request</td>
<td>.certSigningRequest</td>
</tr>
<tr>
<td>开发证书</td>
<td>让开发者使用的设备有真机调试的权限</td>
<td>Certificate -&gt; Software -&gt; iOS App Development</td>
<td>.cer</td>
</tr>
<tr>
<td>开发推送证书</td>
<td>让开发者使用的设备有真机调试推送功能的权限</td>
<td>Certificate -&gt; Service -&gt; Apple Push Notification service SSL (Sandbox)</td>
<td>.cer</td>
</tr>
<tr>
<td>发布证书</td>
<td>让开发者有发布 App 的权限，可以上架 App Store</td>
<td>Certificate -&gt;  Software -&gt; iOS App Distribution (App Store Ad Hoc)</td>
<td>.cer</td>
</tr>
<tr>
<td>发布推送证书</td>
<td>让开发者有 “上架APP” 推送功能的权限</td>
<td>Certificate -&gt; Service -&gt;  Apple Push Notification service SSL (Sandbox &amp; Production)</td>
<td>.cer</td>
</tr>
<tr>
<td>In House 发布证书</td>
<td>只有 $299/年 的开发者账号才能申请，让开发者有发布 App 的权限，不可以上架 App Store，无需通过苹果审核，任何设备都可以安装 App</td>
<td>Certificate -&gt; Software -&gt;  In House and Ad Hoc</td>
<td>.cer</td>
</tr>
<tr>
<td>P12 证书</td>
<td>让第三方开发工具或平台有开发、调试、打包的权限，有时也叫 Keychain</td>
<td>无</td>
<td>.p12</td>
</tr>
<tr>
<td>应用 ID</td>
<td>项目包名，即 bundleID</td>
<td>Identifiers</td>
<td>字符串，非文件</td>
</tr>
<tr>
<td>应用描述配置文件</td>
<td>让开发者的项目能有真机调试，发布的权限</td>
<td>Profiles</td>
<td>.mobileprovision</td>
</tr>
</tbody></table>
<p>证书 和 P12 证书的区别：</p>
<table>
<thead>
<tr>
<th>项目</th>
<th>证书</th>
<th>P12 证书</th>
</tr>
</thead>
<tbody><tr>
<td>后缀名</td>
<td>.cer</td>
<td>.p12</td>
</tr>
<tr>
<td>图标表示</td>
<td>蓝色边框和字体</td>
<td>黑灰色边框和字体</td>
</tr>
<tr>
<td>所含密钥</td>
<td>公钥</td>
<td>公钥和私钥</td>
</tr>
<tr>
<td>使用者</td>
<td>开发者，项目创建者，<code>Xcode</code></td>
<td>第三方开发工具或平台，如<code>lbuilder</code>、<code>phonegap</code>、<code>HBuilder</code>、<code>AppCan</code>、<code>APICloud</code></td>
</tr>
<tr>
<td>来源</td>
<td>通过钥匙串文件在苹果开发者官网申请生成</td>
<td>由证书导出</td>
</tr>
</tbody></table>
<h2 id="二、申请流程"><a href="#二、申请流程" class="headerlink" title="二、申请流程"></a>二、申请流程</h2><p>然后我们梳理一下申请流程，我们需要用到的设备是一台可以联网的 Mac，执行以下步骤</p>
<ul>
<li>1 创建钥匙串文件</li>
<li>2 申请证书 （需要上一步钥匙串文件）</li>
<li>3 创建应用 ID （如果已创建则可以跳过）</li>
<li>4 添加调试设备</li>
<li>5 创建应用描述文件 （需要证书和上一步的应用 ID）</li>
<li>6 导出 P12 证书 （需要证书和密钥）</li>
</ul>
<p>确保 步骤1 和 步骤6 在同一台 Mac 上进行，否则将无法导出 P12 证书</p>
<p>如果我们是第一次申请证书，那么 步骤1 到 步骤6 都要执行一遍</p>
<p>如果我们之前申请过证书，那么只要我们在之前申请证书的设备上执行 步骤3 到 步骤6 即可，如果应用 ID 已经创建，则可以跳过 步骤3</p>
<p>如果申请发布证书或 In House 类型证书，或者测试设备已经添加过了，则可以跳过 步骤 4</p>
<p>申请推送证书只需要执行 步骤1、步骤2 和 步骤6 即可</p>
<p>接下来我们就开始吧。</p>
<h3 id="1-创建钥匙串文件"><a href="#1-创建钥匙串文件" class="headerlink" title="1. 创建钥匙串文件"></a>1. 创建钥匙串文件</h3><p>在 Mac 上 打开 “钥匙串访问” 程序，一般在 <code>其他</code> 中，找不到的话可以在右上角搜索</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/0.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>然后点击上方钥匙串访问栏-&gt;证书助理-&gt;从证书颁发机构请求证书…</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/0-1.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>填写一个邮箱地址，选择 “存储到磁盘”，点击继续</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/0-2.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>文件名称为 <code>CertificateSigningRequest.certSigningRequest</code>，选择保存位置，点击 “存储” 保存到指定路径下，钥匙串文件就创建完成了。</p>
<div style="width: 100%;display: flex;justify-content: center;flex-wrap: wrap;">
    <img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/0-3.png" style="display:block;margin:0 10px">
    <img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/0-4.png" style="display:block;margin:0 10px">
</div>

<h3 id="2-申请证书"><a href="#2-申请证书" class="headerlink" title="2. 申请证书"></a>2. 申请证书</h3><p>登录 苹果开发者网站 <code>https://developer.apple.com</code>, 点击 <code>Account</code></p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/1-0.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>输入 苹果开发者帐号和密码 登录</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/1-1.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>在左侧菜单栏中或者中间内容区域点击 <code>Certificates, Identifiers &amp; Profiles</code> 进入 “证书、ID、描述文件” 管理</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/1-2.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>在证书管理页面，可以看到所有已经申请的证书及描述文件；在 <code>Certificates</code>栏目下点击页面的加号来创建一个新的证书：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/1-3.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">


<p>如果我们要申请 APP 开发证书，则在 <code>Software</code> 栏下选中我们要申请的证书类型， </p>
<ul>
<li><p>如果我们的账号类型是 <strong>$99/年</strong>,</p>
<ul>
<li>如果我们是 <strong>Xcode</strong> 原生开发，则选择对应的 开发证书 <code>Apple Development</code> 或发布证书 <code>Apple Distribution</code></li>
<li>否则我们 开发证书选择 <code>iOS App Development</code> , 发布证书选择 <code>iOS Distribution (App Store and Ad Hoc)</code></li>
</ul>
</li>
<li><p>如果我们的账号类型是 <strong>$299/年</strong>,</p>
<ul>
<li>选择 <strong>In House and Ad Hoc</strong></li>
</ul>
</li>
</ul>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/1-4-software.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>如果我们要申请 推送服务 证书，则在 <code>Service</code> 栏下选中我们要申请的证书类型</p>
<ul>
<li>开发推送证书选择 <code>Apple Push Notification service SSL (Sandbox)</code></li>
<li>发布推送证书选择 <code>Apple Push Notification service SSL (Sandbox &amp; Production)</code></li>
</ul>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/1-4-service.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>然后点击 <code>Continue</code>：</p>
<p>接下来需要用到 步骤1 生成的证书请求文件，也就是钥匙串文件，点击 <code>Choose File...</code> 选择刚刚保存到本地的 <code>CertificateSigningRequest.certSigningRequest</code> 文件，点击 <code>Continue</code> 生成证书文件：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/1-5.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>生成证书后选择 <code>Download</code> 将证书下到本地：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/1-6.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<h3 id="3-创建应用-ID-（App-ID，Bundle-ID）"><a href="#3-创建应用-ID-（App-ID，Bundle-ID）" class="headerlink" title="3. 创建应用 ID （App ID，Bundle ID）"></a>3. 创建应用 ID （App ID，Bundle ID）</h3><p>选择页面的 <code>Identifiers</code> 可查看到已申请的所有 App 应用标识，点击页面上的加号来创建一个新的应用标识：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/3-0.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>选择标识类型为 <code>App IDs</code>，然后点击 <code>Continue</code></p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/3-1.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>平台选择 <code>iOS，tvOS，watchOS</code>，Bundle ID 选择 <code>Explicit</code>，在 <code>Description</code>中填写描述，然后填写 <code>Bundle ID</code>，<code>Bundle ID</code> 要保持唯一性，建议填写反域名加应用标识的格式 如：<code>com.xxx.myappname</code>， 然后点击 <code>Continue</code></p>
<p>注意：在第三方开发平台中 App 提交云端打包时界面上的 AppID 栏或者在证书配置里填写的就是这个 <code>Bundle ID</code></p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/3-2.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>接下来需要选择应用需要使用的服务（如需要使用到消息推送功能，则选择<code>Push Notifications</code>），然后点击 <code>Continue</code><br>注意：如果 App 要上架 App Store, 用不到的服务一定不要勾选，以免响应审核</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/3-3.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">


<p>确认后选择提交，回到 <code>identifiers</code> 页面即可看到刚创建的应用 ID：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/3-4.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">


<p>至此，应用 ID 已经创建完毕。</p>
<h3 id="4-添加调试设备"><a href="#4-添加调试设备" class="headerlink" title="4. 添加调试设备"></a>4. 添加调试设备</h3><p>开发描述文件必须绑定调试设备，只有授权的设备才可以直接安装 App，所以在申请开发描述文件之前，先添加调试的设备，如果已经添加设备，可跳过此步骤。<br>在证书管理页面选择 <code>Devices</code>，可查看到已添加的所有设备信息，点击页面上的加号来添加一个新设备：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/4-0.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">


<p>填写设备名称 和 UDID（设备标识）：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/4-1.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">


<p>获取设备UDID方法，将设备连接到电脑，启动 iTunes，点击此区域可切换显示设备的 UDID，右键选择复制，输入完成后，点击 <code>Continue</code> 继续完成添加即可；</p>
<p>接下来继续申请描述文件</p>
<h3 id="5-创建应用描述文件"><a href="#5-创建应用描述文件" class="headerlink" title="5. 创建应用描述文件"></a>5. 创建应用描述文件</h3><p>在证书管理页面选择 <code>Profile</code>，可查看到已申请的所有描述文件，点击页面上的加号来添加一个新的描述文件：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/5-0.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>选择我们要创建的描述文件类型，</p>
<ul>
<li><p>如果我们的账号类型是 <strong>$99/年</strong>,</p>
<ul>
<li><p>如果我们要创建<strong>开发描述文件</strong>，则在 <code>Development</code> 栏下选中 <code>iOS App Development</code></p>
</li>
<li><p>如果我们要创建<strong>发布描述文件</strong>，则在 <code>Distribution</code>栏下选中 <code>App Store</code></p>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>如果我们的账号类型是 <strong>$299/年</strong>,</p>
<ul>
<li>在 <code>Distribution</code>栏下选择 <strong>In House</strong></li>
</ul>
</li>
</ul>
<p>点击<code>Continue</code>按钮：</p>
<div style="width: 100%;display: flex;justify-content: center;flex-wrap: wrap;">
    <img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/5-1.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">
    <img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/5-1-inhouse.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">
</div>

<p>这里要选择 步骤3 创建的 应用 ID （App ID，Bundle ID），点击<code>Continue</code>：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/5-2.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>接下来选择需要绑定的证书，也就是 步骤2 申请的证书， 点击<code>Continue</code>：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/5-3.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>从2020年春季开始，只有具有关联的部署描述的应用ID才有资格生成新的 In House 配置文件。</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/5-3-nocer.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>如果要创建的是开发描述文件，则要选择授权调试设备，这里建议直接勾选 <code>Select All</code>，点击 <code>Continue</code>：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/5-4.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>输入描述文件的名称, 点击 <code>Generate</code> 生成描述文件：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/5-5.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>点击 <code>Download</code> 下载保存开发描述文件（文件后缀为 .mobileprovision）</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/5-6.png" width="50%" style="display:block;margin:0 auto;min-width: 280px">

<p>至此，对应的描述文件（.mobileprovision) 创建完成;</p>
<h3 id="6-导出-P12-证书"><a href="#6-导出-P12-证书" class="headerlink" title="6. 导出 P12 证书"></a>6. 导出 P12 证书</h3><p>双击 步骤2 下载的证书, 打开证书将其安装到钥匙串，若弹出安装提示，选择安装到<code>登录</code>，在钥匙串中找到安装的证书</p>
<p>若提示此证书是由未知颁发机构签名的</p>
<p>请下载<code>Apple Worldwide Developer Relations Certification Authority</code>证书进行安装</p>
<p>地址<a href="http://developer.apple.com/certificationauthority/AppleWWDRCA.cer" target="_blank" rel="noopener">http://developer.apple.com/certificationauthority/AppleWWDRCA.cer</a></p>
<p>在左边选择 <code>登录</code> 和 <code>我的证书</code>，找到证书，在证书上面点击鼠标右键，然后在菜单中选择导出证书，如图：</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/6-0.png" style="display:block;margin:0 auto;min-width: 280px">

<p>在弹出页面中指定证书名，点击存储，然后输入证书密码（此密码在第三方开发平台页面输入），点击好，生成 p12 格式证书。</p>
<img src="https://pub.wangxuefeng.com.cn/asset/blogthumbnail/how-to-request-the-ios-certificate/6-1.png" style="display:block;margin:0 auto;min-width: 280px">

<p>至此，我们现在 有了 </p>
<ul>
<li><ol>
<li>钥匙串文件</li>
</ol>
</li>
<li><ol start="2">
<li>证书（或推送证书），分<strong>[开发，发布，In House]</strong>类型</li>
</ol>
</li>
<li><ol start="3">
<li>应用 ID （Bundle ID）</li>
</ol>
</li>
<li><ol start="4">
<li>证书导出的 P12证书（或推送证书导出的 推送P12证书），分<strong>[开发，发布，In House]</strong>类型</li>
</ol>
</li>
<li><ol start="5">
<li>应用描述文件，分<strong>[开发，发布，In House]</strong>类型</li>
</ol>
</li>
</ul>
<p>一般第三方平台所需要的是 <code>证书导出的 P12证书</code> 和 <code>应用描述文件</code>，同时需要填写 <code>应用 ID</code> 和导出 P12 证书时设置的密码。</p>
<h3 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h3><ul>
<li><a href="https://blog.csdn.net/weixin_34408717/article/details/90338084?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2" target="_blank" rel="noopener">苹果开发者账号的区别，发布方式In-House和Ad Hoc区别</a></li>
<li><a href="https://ask.dcloud.net.cn/article/152" target="_blank" rel="noopener">iOS证书(.p12)和描述文件(.mobileprovision)申请</a></li>
<li><a href="https://docs.apicloud.com/Dev-Guide/iOS-License-Application-Guidance#2" target="_blank" rel="noopener">iOS证书及描述文件制作流程</a></li>
</ul>

        
                <blockquote style="margin: 2em 0 0;padding: 0.5em 1em;border-left: 3px solid #F44336;background-color: #F5F5F5;list-style: none;">
                    <p><strong>
                         
                            本博客遵循<a href="https://creativecommons.org/licenses/by-nc-sa/3.0/cn/" target="_blank">署名-非商业性使用-相同方式共享 3.0 中国大陆 (CC BY-NC-SA 3.0 CN)</a>协议
                        </strong>
                        <br>
                        <strong>本文链接：</strong><a href="https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html">https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html</a>
                    </p>
                </blockquote>
        
    

    
</div>


                <!-- Post Feeding -->
                
                    <style type="text/css">
  .post-feeding,
  .post-feeding-warp {
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .post-feeding {
    flex-direction: column;
  }
  .post-feeding-item {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    margin: 5px 10px;
  }
  .post-feeding-text {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
  }
  .post-feeding-text span {
    color: rgb(102, 165, 228);
    text-align: center;
  }
  .post-feeding-text-content {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
  }
</style>
<div class="post-feeding">
  
    <div class="post-feeding-text">
      <span>(●'◡'●)</span>
      <div class="post-feeding-text-content">
        <span>如果你觉得不错或者对你有帮助， </span>
        <span>你可以替我买一杯咖啡 ☕</span>
      </div>
      <div class="post-feeding-text-content">
        <span>If you think it's good or helpful,&nbsp;&nbsp;</span>
        <span>you can buy me a cup of coffee ☕</span>
      </div>
    </div>
    <div class="post-feeding-warp">
      
        <div class="post-feeding-item">
          <img src="https://pub.wangxuefeng.com.cn/feed/qrcode_onlyqr_feedme_ailpay.png" alt="buy me a coffce via ailpay" title="Buy me a coffce via Ailpay" width="100">
          <span>Ailpay</span>
        </div>
      
      
        <div class="post-feeding-item">
          <img src="https://pub.wangxuefeng.com.cn/feed/qrcode_onlyqr_feedme_wechat.png" alt="buy me a coffce via wechat" title="Buy me a coffce via Wechat" width="100">
          <span>Wechat</span>
        </div>
      
    </div>
  
</div>
                

                

                <!-- Post Comments -->
                
                    
    <!-- 使用 DISQUS_CLICK -->
<div id="disqus-comment">
    <div id="disqus_thread"></div>

<!-- add animation -->
<style>
	.disqus_click_btn {
            line-height: 30px;
            margin: 0;
            min-width: 50px;
            padding: 0 14px;
            display: inline-block;
            font-family: "Roboto", "Helvetica", "Arial", sans-serif;
            font-size: 14px;
            font-weight: 400;
            text-transform: uppercase;
            letter-spacing: 0;
            overflow: hidden;
            will-change: box-shadow;
            transition: box-shadow .2s cubic-bezier(.4, 0, 1, 1), background-color .2s cubic-bezier(.4, 0, .2, 1), color .2s cubic-bezier(.4, 0, .2, 1);
            outline: 0;
            cursor: pointer;
            text-decoration: none;
            text-align: center;
            vertical-align: middle;
            border: 0;
            background: rgba(158, 158, 158, .2);
            box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .14), 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12);
            color: #fff;
            background-color: #757575;
            text-shadow: 0;
            display: none
        }
</style>
	
<div class="btn_click_load"> 
    <button class="disqus_click_btn">阅读评论（请确保 disqus 可以正常加载）</button>
</div>

<script type="text/javascript">
    var disqus_config = function () {
        this.page.url = 'https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html';  // Replace PAGE_URL with your page's canonical URL variable
        this.page.identifier = 'https://blog.wangxuefeng.com.cn/archives/how-to-request-the-ios-certificate.html'; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
    };
</script>

<script type="text/ls-javascript" id="disqus-lazy-load-script">
    $.ajax({
        url: 'https://disqus.com/next/config.json',
        timeout: 4000,
        type: 'GET',
        success: (function() {
            var d = document;
            var s = d.createElement('script');
            s.src = '//xuefeng.disqus.com/embed.js';
            s.setAttribute('data-timestamp', + new Date());
            (d.head || d.body).appendChild(s);
            $('.disqus_click_btn').css('display','none');
        })(),
        error: function() {
          $('.disqus_click_btn').css('display','block');
        }
    });
    $('.btn_click_load').click(function() {  //click to load comments
        (function() { // DON'T EDIT BELOW THIS LINE
            var d = document;
            var s = d.createElement('script');
            s.src = '//xuefeng.disqus.com/embed.js';
            s.setAttribute('data-timestamp', + new Date());
            (d.head || d.body).appendChild(s);
        })();
        $('.disqus_click_btn').css('display','none');
    });
</script>
  	

</div>
<style>
    #disqus-comment{
        background-color: #eee;
        padding: 2pc;
    }
</style>

                
            </div>

            <!-- Post Prev & Next Nav -->
            <nav class="material-nav mdl-color-text--grey-50 mdl-cell mdl-cell--12-col">
    <!-- Prev Nav -->
    

    <!-- Section Spacer -->
    <div class="section-spacer"></div>

    <!-- Next Nav -->
    
        <a href="/archives/a-letter-to-the-new-stationmaster.html" id="post_nav-older" class="next-content">
            旧篇
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <button class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon mdl-color--white mdl-color-text--grey-900" role="presentation">
                <i class="material-icons">arrow_forward</i>
            </button>
        </a>
    
</nav>

        </div>
    </div>



                    
                        <!-- Overlay For Active Sidebar -->
<div class="sidebar-overlay"></div>

<!-- Material sidebar -->
<aside id="sidebar" class="sidebar sidebar-colored sidebar-fixed-left" role="navigation">
    <div id="sidebar-main">
        <!-- Sidebar Header -->
        <div class="sidebar-header header-cover" style="background-image: url(/img/sidebar_header.png);">
    <!-- Top bar -->
    <div class="top-bar"></div>

    <!-- Sidebar toggle button -->
    <button type="button" class="sidebar-toggle mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon" style="display: initial;" data-upgraded=",MaterialButton,MaterialRipple">
        <i class="material-icons">clear_all</i>
        <span class="mdl-button__ripple-container">
            <span class="mdl-ripple">
            </span>
        </span>
    </button>

    <!-- Sidebar Avatar -->
    <div class="sidebar-image">
        <img src="https://pub.wangxuefeng.com.cn/asset/defaultHead/avatar.png" alt="w-xuefeng's avatar">
    </div>

    <!-- Sidebar Email -->
    <a data-toggle="dropdown" class="sidebar-brand" href="#settings-dropdown">
        xuefeng@wangxuefeng.com.cn
        <b class="caret"></b>
    </a>
</div>


        <!-- Sidebar Navigation  -->
        <ul class="nav sidebar-nav">
    <!-- User dropdown  -->
    <li class="dropdown">
        <ul id="settings-dropdown" class="dropdown-menu">
            
                <li>
                    <a href="https://www.wangxuefeng.com.cn" target="_blank" title="XueFeng&#39;s Home">
                        
                            <i class="material-icons sidebar-material-icons sidebar-indent-left1pc-element">person</i>
                        
                        XueFeng&#39;s Home
                    </a>
                </li>
            
                <li>
                    <a href="mailto: xuefeng@wangxuefeng.com.cn" target="_blank" title="Email Me">
                        
                            <i class="material-icons sidebar-material-icons sidebar-indent-left1pc-element">email</i>
                        
                        Email Me
                    </a>
                </li>
            
        </ul>
    </li>

    <!-- Homepage -->
    
        <li id="sidebar-first-li">
            <a href="/">
                
                    <i class="material-icons sidebar-material-icons">home</i>
                
                主页
            </a>
        </li>
        
    

    <!-- Archives  -->
    
        <li class="dropdown">
            <a href="#" class="ripple-effect dropdown-toggle" data-toggle="dropdown">
                
                    <i class="material-icons sidebar-material-icons">inbox</i>
                
                    归档
                <b class="caret"></b>
            </a>
            <ul class="dropdown-menu">
            <li>
                <a class="sidebar_archives-link" href="/archives/2020/05/">五月 2020<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2020/03/">三月 2020<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2020/01/">一月 2020<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2019/08/">八月 2019<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2019/06/">六月 2019<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2019/05/">五月 2019<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2018/12/">十二月 2018<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2018/08/">八月 2018<span class="sidebar_archives-count">5</span></a></li><li><a class="sidebar_archives-link" href="/archives/2018/07/">七月 2018<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2018/04/">四月 2018<span class="sidebar_archives-count">2</span></a></li><li><a class="sidebar_archives-link" href="/archives/2018/03/">三月 2018<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2017/12/">十二月 2017<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2017/11/">十一月 2017<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2017/06/">六月 2017<span class="sidebar_archives-count">1</span></a>
            </ul>
        </li>
        
    

    <!-- Categories  -->
    
        <li class="dropdown">
            <a href="#" class="ripple-effect dropdown-toggle" data-toggle="dropdown">
                
                    <i class="material-icons sidebar-material-icons">chrome_reader_mode</i>
                
                分类
                <b class="caret"></b>
            </a>
            <ul class="dropdown-menu">
                <li>
                <a class="sidebar_archives-link" href="/categories/SU%E5%B0%94%E4%B8%8D%E8%AE%A4%E8%BE%93-%E4%BA%A7%E5%93%81%E7%AF%87/">SU尔不认输 | 产品篇<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/categories/SU%E5%B0%94%E4%B8%8D%E8%AE%A4%E8%BE%93-%E8%AF%BB%E4%B9%A6%E4%BC%9A/">SU尔不认输 | 读书会<span class="sidebar_archives-count">4</span></a></li><li><a class="sidebar_archives-link" href="/categories/%E6%8A%80%E6%9C%AF%E8%B4%B4-iOS-%E5%BC%80%E5%8F%91/">技术贴 | iOS 开发<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/categories/%E6%8A%80%E6%9C%AF%E8%B4%B4-%E6%80%BB%E7%BB%93%E7%B1%BB/">技术贴 | 总结类<span class="sidebar_archives-count">2</span></a></li><li><a class="sidebar_archives-link" href="/categories/%E6%8A%80%E6%9C%AF%E8%B4%B4-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/">技术贴 | 数据结构<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/categories/%E6%8A%80%E6%9C%AF%E8%B4%B4-%E7%AE%97%E6%B3%95%E7%B1%BB/">技术贴 | 算法类<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/categories/%E6%8A%80%E6%9C%AF%E8%B4%B4-%E9%9D%A2%E8%AF%95%E9%A2%98/">技术贴 | 面试题<span class="sidebar_archives-count">3</span></a></li><li><a class="sidebar_archives-link" href="/categories/%E6%B5%81%E6%B0%B4%E8%B4%A6-%E6%80%BB%E7%BB%93%E7%B1%BB/">流水账 | 总结类<span class="sidebar_archives-count">3</span></a></li><li><a class="sidebar_archives-link" href="/categories/%E7%94%9F%E6%B4%BB%E7%BA%AA%E5%AE%9E-%E8%A7%86%E9%A2%91%E7%B1%BB/">生活纪实 | 视频类<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/categories/%E7%9F%A5%E8%AF%86%E5%88%86%E4%BA%AB-%E8%A7%86%E9%A2%91%E7%B1%BB/">知识分享 | 视频类<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/categories/%E9%98%B3%E5%85%89%E7%BD%91%E7%AB%99-%E4%B8%80%E5%B0%81%E4%BF%A1/">阳光网站  | 一封信<span class="sidebar_archives-count">1</span></a>
            </ul>
        </li>
        
            <li class="divider"></li>
        
    

    <!-- Pages  -->
    
        <li>
            <a href="/tags" title="标签云">
                
                    <i class="material-icons sidebar-material-icons">loyalty</i>
                
                标签云
            </a>
        </li>
        
    
        <li>
            <a href="/timeline" title="时光之轴">
                
                    <i class="material-icons sidebar-material-icons">access_time</i>
                
                时光之轴
            </a>
        </li>
        
    
        <li>
            <a href="/links" title="友情链接">
                
                    <i class="material-icons sidebar-material-icons">send</i>
                
                友情链接
            </a>
        </li>
        
    
        <li>
            <a href="/about" title="关于我">
                
                    <i class="material-icons sidebar-material-icons">person</i>
                
                关于我
            </a>
        </li>
        
    

    <!-- Article Number  -->
    
</ul>


        <!-- Sidebar Footer -->
        <!--
I'm glad you use this theme, the development is no so easy, I hope you can keep the copyright, I will thank you so much.
If you still want to delete the copyrights, could you still retain the first one? Which namely "Theme Material"
It will not impact the appearance and can give developers a lot of support :)

很高兴您使用并喜欢该主题，开发不易 十分谢谢与希望您可以保留一下版权声明。
如果您仍然想删除的话 能否只保留第一项呢？即 "Theme Material"
它不会影响美观并可以给开发者很大的支持和动力。 :)
-->

<!-- Sidebar Divider -->

    <div class="sidebar-divider"></div>


<!-- Theme Material -->

    <a href="https://github.com/viosey/hexo-theme-material"  class="sidebar-footer-text-a" target="_blank">
        <div class="sidebar-text mdl-button mdl-js-button mdl-js-ripple-effect sidebar-footer-text-div" data-upgraded=",MaterialButton,MaterialRipple">
            主题 - Material
            <span class="sidebar-badge badge-circle">i</span>
        </div>
    </a>


<!-- Help & Support -->
<!--

-->

<!-- Feedback -->
<!--

-->

<!-- About Theme -->
<!--

-->

    </div>

    <!-- Sidebar Image -->
    

</aside>

                    

                    
                        <!-- Footer Top Button -->
                        <div id="back-to-top" class="toTop-wrap">
    <a href="#top" class="toTop">
        <i class="material-icons footer_top-i">expand_less</i>
    </a>
</div>

                    

                    <!--Footer-->
<footer class="mdl-mini-footer" id="bottom">
    
        <!-- Paradox Footer Left Section -->
        <div class="mdl-mini-footer--left-section sns-list">
    <!-- Twitter -->
    
        <a href="https://twitter.com/XueFeng_W" target="_blank">
            <button class="mdl-mini-footer--social-btn social-btn footer-sns-twitter">
                <span class="visuallyhidden">Twitter</span>
            </button><!--
     --></a>
    

    <!-- Facebook -->
    

    <!-- Google + -->
    
        <a href="https://plus.google.com/103648995569548189496" target="_blank">
            <button class="mdl-mini-footer--social-btn social-btn footer-sns-gplus">
                <span class="visuallyhidden">Google Plus</span>
            </button><!--
     --></a>
    

    <!-- Weibo -->
    
        <a href="https://weibo.com/feuxw" target="_blank">
            <button class="mdl-mini-footer--social-btn social-btn footer-sns-weibo">
                <span class="visuallyhidden">Weibo</span>
            </button><!--
     --></a>
    

    <!-- Instagram -->
    

    <!-- Tumblr -->
    

    <!-- Github -->
    
        <a href="https://github.com/w-xuefeng/" target="_blank">
            <button class="mdl-mini-footer--social-btn social-btn footer-sns-github">
                <span class="visuallyhidden">Github</span>
            </button><!--
     --></a>
    

    <!-- LinkedIn -->
    

    <!-- Zhihu -->
    
        <a href="https://www.zhihu.com/people/xue-feng-30-55/activities" target="_blank">
            <button class="mdl-mini-footer--social-btn social-btn footer-sns-zhihu">
                <span class="visuallyhidden">Zhihu</span>
            </button><!--
     --></a>
    

    <!-- Bilibili -->
    

    <!-- Telegram -->
    

    <!-- V2EX -->
    

    <!-- Segmentfault -->
    
</div>


        <!--Copyright-->
        <div id="copyright">
            Copyright&nbsp;©&nbsp;<span year></span>&nbsp;boXue·Fengke
            
                <br>
                
                    <a href="http://beian.miit.gov.cn" target="_blank" rel="nofollow noopener" style="text-decoration: none;color: #9e9e9e;">陇ICP备16002668号-1</a><!-- Hotjar Tracking Code for blog.wangxuefeng.com.cn --> <script> (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1050089,hjsv:6}; a=o.getElementsByTagName("head")[0]; r=o.createElement("script");r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,"https://static.hotjar.com/c/hotjar-",".js?sv="); </script>
                
            
        </div>

        <!-- Paradox Footer Right Section -->

        <!--
        I am glad you use this theme, the development is no so easy, I hope you can keep the copyright.
        It will not impact the appearance and can give developers a lot of support :)

        很高兴您使用该主题，开发不易，希望您可以保留一下版权声明。
        它不会影响美观并可以给开发者很大的支持。 :)
        -->

        <div class="mdl-mini-footer--right-section">
            <div>
                <div class="footer-develop-div">Powered by <a href="https://hexo.io" target="_blank" class="footer-develop-a">Hexo</a></div>
                <div class="footer-develop-div">Theme - <a href="https://github.com/viosey/hexo-theme-material" target="_blank" class="footer-develop-a">Material</a></div>
            </div>
        </div>
    
</footer>


                    <!-- Import JS File -->

    <script>lsloader.load("lazyload_js","/js/lazyload.min.js?1BcfzuNXqV+ntF6gq+5X3Q==", true)</script>



    <script>lsloader.load("js_js","/js/js.min.js?Bn9UzEm8RrBSxqyZB0zPjA==", true)</script>



    <script>lsloader.load("np_js","/js/nprogress.js?pl3Qhb9lvqR1FlyLUna1Yw==", true)</script>


<script type="text/ls-javascript" id="NProgress-script">
    NProgress.configure({
        showSpinner: true
    });
    NProgress.start();
    $('#nprogress .bar').css({
        'background': '#29d'
    });
    $('#nprogress .peg').css({
        'box-shadow': '0 0 10px #29d, 0 0 15px #29d'
    });
    $('#nprogress .spinner-icon').css({
        'border-top-color': '#29d',
        'border-left-color': '#29d'
    });
    setTimeout(function() {
        NProgress.done();
        $('.fade').removeClass('out');
    }, 800);
</script>









   <!-- 使用 DISQUS js 代码 -->






<!-- UC Browser Compatible -->
<script>
	var agent = navigator.userAgent.toLowerCase();
	if(agent.indexOf('ucbrowser')>0) {
		document.write('<link rel="stylesheet" href="/css/uc.css">');
	   alert('由于 UC 浏览器使用极旧的内核，而本网站使用了一些新的特性。\n为了您能更好的浏览，推荐使用 Chrome 或 Firefox 浏览器。');
	}
</script>

<!-- Import prettify js  -->



<!-- Window Load -->
<!-- add class for prettify -->
<script type="text/ls-javascript" id="window-load">
    $(window).on('load', function() {
        // Post_Toc parent position fixed
        $('.post-toc-wrap').parent('.mdl-menu__container').css('position', 'fixed');
    });

    
    
</script>

<!-- MathJax Load-->


<!-- Bing Background -->


<script type="text/ls-javascript" id="lazy-load">
    // Offer LazyLoad
    queue.offer(function(){
        $('.lazy').lazyload({
            effect : 'show'
        });
    });

    // Start Queue
    $(document).ready(function(){
        setInterval(function(){
            queue.execNext();
        },200);
    });
</script>

<!-- Custom Footer -->



<script>
    var copyrightNow = new Date().getFullYear();
    var textContent = document.querySelector('span[year]')

    copyrightSince = 0000;
    if (copyrightSince === copyrightNow||copyrightSince === 0000) {
        textContent.textContent = copyrightNow
    } else {
        textContent.textContent = copyrightSince + ' - ' + copyrightNow
    }

    (function(){
        var scriptList = document.querySelectorAll('script[type="text/ls-javascript"]')

        for (var i = 0; i < scriptList.length; ++i) {
            var item = scriptList[i];
            lsloader.runInlineScript(item.id,item.id);
        }
    })()
console.log('\n %c © Material Theme | Version: 1.5.6 | https://github.com/viosey/hexo-theme-material %c \n', 'color:#455a64;background:#e0e0e0;padding:5px 0;border-top-left-radius:5px;border-bottom-left-radius:5px;', 'color:#455a64;background:#e0e0e0;padding:5px 0;border-top-right-radius:5px;border-bottom-right-radius:5px;');
</script>

                </main>
            </div><!-- hexo-inject:begin --><!-- hexo-inject:end -->
        </body>
    
</html>
